A message-passing parallel application (i.e., a distributed application) is cooperatively implemented via generally contemporaneous execution of two or more machine accessible instructions (e.g., processes) by one or more processors and/or cores. A distributed application often has a non-uniform number of messages and/or data to be communicated between the two or more of processes that collectively implement the distributed application.
Symmetric Multi-Processor (SMP) clusters, multi-clusters and/or computing networks are commonly used to execute and/or implement distributed applications. Such computing networks often have non-uniform communication costs associated with the transmission of messages and/or data between the processors, cores and/or computing nodes that form the computing network. For instance, an example computing node contains multiple processors and/or cores and has high bandwidth and/or low latency (i.e., low communication cost) communication paths that connect the processors and/or cores. However, communication paths between processors and/or cores of this example computing node and another processor and/or core associated with any other computing node may have substantially lower bandwidth and/or substantially higher latency (i.e., a higher communication cost). For example, messages and/or data passed between two computing nodes may traverse through multiple Ethernet switches and/or communication links and, thus, exhibit relatively higher latency and/or lower bandwidth.
Given the non-uniformity of communication requirements for a distributed application and the non-uniformity of communication costs for a computing network, the assignment of processes of a distributed application to processors, cores and/or computing nodes of a computing network has a direct and/or potentially significant impact on the performance (e.g., execution speed) of the distributed application.